home *** CD-ROM | disk | FTP | other *** search
/ Java Primer Plus / Java Primer Plus (Waite Group Proess)(1996).iso / java_Win / demo / WireFrame / ThreeD.class (.txt) < prev    next >
Encoding:
Java Class File  |  1995-12-06  |  3.8 KB  |  137 lines

  1. import java.applet.Applet;
  2. import java.awt.Component;
  3. import java.awt.Event;
  4. import java.awt.Graphics;
  5. import java.io.InputStream;
  6. import java.net.URL;
  7.  
  8. public class ThreeD extends Applet implements Runnable {
  9.    // $FF: renamed from: md Model3D
  10.    Model3D field_0;
  11.    boolean painted = true;
  12.    float xfac;
  13.    int prevx;
  14.    int prevy;
  15.    float xtheta;
  16.    float ytheta;
  17.    float scalefudge = 1.0F;
  18.    Matrix3D amat = new Matrix3D();
  19.    Matrix3D tmat = new Matrix3D();
  20.    String mdname;
  21.    String message;
  22.  
  23.    public void init() {
  24.       System.out.println("at init time, CM = " + ((Component)this).getColorModel());
  25.       this.mdname = ((Applet)this).getParameter("model");
  26.  
  27.       try {
  28.          this.scalefudge = Float.valueOf(((Applet)this).getParameter("scale"));
  29.       } catch (Exception var1) {
  30.       }
  31.  
  32.       this.amat.yrot((double)20.0F);
  33.       this.amat.xrot((double)20.0F);
  34.       if (this.mdname == null) {
  35.          this.mdname = "model.obj";
  36.       }
  37.  
  38.       ((Applet)this).resize(((Component)this).size().width <= 20 ? 400 : ((Component)this).size().width, ((Component)this).size().height <= 20 ? 400 : ((Component)this).size().height);
  39.    }
  40.  
  41.    public void run() {
  42.       InputStream var1 = null;
  43.  
  44.       try {
  45.          Thread.currentThread().setPriority(1);
  46.          var1 = (new URL(((Applet)this).getDocumentBase(), this.mdname)).openStream();
  47.          Model3D var2 = new Model3D(var1);
  48.          this.field_0 = var2;
  49.          var2.findBB();
  50.          var2.compress();
  51.          float var3 = var2.xmax - var2.xmin;
  52.          float var4 = var2.ymax - var2.ymin;
  53.          float var5 = var2.zmax - var2.zmin;
  54.          if (var4 > var3) {
  55.             var3 = var4;
  56.          }
  57.  
  58.          if (var5 > var3) {
  59.             var3 = var5;
  60.          }
  61.  
  62.          float var6 = (float)((Component)this).size().width / var3;
  63.          float var7 = (float)((Component)this).size().height / var3;
  64.          this.xfac = 0.7F * (var6 < var7 ? var6 : var7) * this.scalefudge;
  65.       } catch (Exception var9) {
  66.          this.field_0 = null;
  67.          this.message = ((Throwable)var9).toString();
  68.       }
  69.  
  70.       try {
  71.          if (var1 != null) {
  72.             var1.close();
  73.          }
  74.       } catch (Exception var8) {
  75.       }
  76.  
  77.       ((Component)this).repaint();
  78.    }
  79.  
  80.    public void start() {
  81.       if (this.field_0 == null && this.message == null) {
  82.          (new Thread(this)).start();
  83.       }
  84.  
  85.    }
  86.  
  87.    public void stop() {
  88.    }
  89.  
  90.    public boolean mouseDown(Event var1, int var2, int var3) {
  91.       this.prevx = var2;
  92.       this.prevy = var3;
  93.       return true;
  94.    }
  95.  
  96.    public boolean mouseDrag(Event var1, int var2, int var3) {
  97.       this.tmat.unit();
  98.       float var4 = (float)(this.prevy - var3) * 360.0F / (float)((Component)this).size().width;
  99.       float var5 = (float)(var2 - this.prevx) * 360.0F / (float)((Component)this).size().height;
  100.       this.tmat.xrot((double)var4);
  101.       this.tmat.yrot((double)var5);
  102.       this.amat.mult(this.tmat);
  103.       if (this.painted) {
  104.          this.painted = false;
  105.          ((Component)this).repaint();
  106.       }
  107.  
  108.       this.prevx = var2;
  109.       this.prevy = var3;
  110.       return true;
  111.    }
  112.  
  113.    public void paint(Graphics var1) {
  114.       if (this.field_0 != null) {
  115.          this.field_0.mat.unit();
  116.          this.field_0.mat.translate(-(this.field_0.xmin + this.field_0.xmax) / 2.0F, -(this.field_0.ymin + this.field_0.ymax) / 2.0F, -(this.field_0.zmin + this.field_0.zmax) / 2.0F);
  117.          this.field_0.mat.mult(this.amat);
  118.          this.field_0.mat.scale(this.xfac, -this.xfac, 16.0F * this.xfac / (float)((Component)this).size().width);
  119.          this.field_0.mat.translate((float)(((Component)this).size().width / 2), (float)(((Component)this).size().height / 2), 8.0F);
  120.          this.field_0.transformed = false;
  121.          this.field_0.paint(var1);
  122.          this.setPainted();
  123.       } else {
  124.          if (this.message != null) {
  125.             var1.drawString("Error in model:", 3, 20);
  126.             var1.drawString(this.message, 10, 40);
  127.          }
  128.  
  129.       }
  130.    }
  131.  
  132.    private synchronized void setPainted() {
  133.       this.painted = true;
  134.       this.notifyAll();
  135.    }
  136. }
  137.